﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Itegracion.Framework.Forms;
using Microsoft.Practices.EnterpriseLibrary.Data;
using System.Data.Common;
using System.Data;

namespace Itegracion.iAlmacen.Model
{
    public class Documento
    {   
        public static List<Element> TraerListado(List<Element> entrada)
        {
            List<Element> rpta = new List<Element>();

            Database db = DatabaseFactory.CreateDatabase("dbItegracion");
            string txt = string.Format(@"
                SELECT
                  d.id,
                  d.serie + '-' + d.numero as nroSerie,
                  d.fecha,
                  c.nombre as tipo,
                  eo.docId as docId,
                  eo.nombre as entidad,
                  e.nombre as estado,
                  d.subTotal,
                  d.igv,
                  d.total
                FROM
                  Documento d
                  JOIN Constante c ON c.codigo = 'TipoDocumento' AND d.idTipo = c.oid
                  LEFT JOIN Relacion ro ON d.id = ro.idDocumento and ro.idTipo = 1
                  LEFT JOIN Entidad eo ON ro.idEntidad = eo.id
                  LEFT JOIN Constante e ON e.codigo = 'EstadoDocumento' AND d.idEstado = e.oid
                WHERE
                  d.idTipo IN ({0})
                ORDER BY
                  d.id DESC", entrada[0].Value);
            
            DbCommand command = db.GetSqlStringCommand(txt);
            DataTable dt = db.ExecuteDataSet(command).Tables[0];
            rpta.Add(new Element("rpta", dt));

            return rpta;
        }
        public static List<Element> Traer(List<Element> entrada)
        {
            List<Element> rpta = new List<Element>();

            Database db = DatabaseFactory.CreateDatabase("dbItegracion");
            DbCommand command = db.GetSqlStringCommand(@"
                SELECT
                  d.id,
                  d.serie,
                  d.numero,
                  d.fecha,
                  d.idTipo,
                  d.idMoneda,
                  d.idModalidadPago,
                  eo.docId,
                  eo.nombre as origen,
                  eo.direccion as odireccion,
                  e.nombre as estado,
                  d.subTotal,
                  d.igv,
                  d.total,
                  g.fechaTraslado,
                  g.partida,
                  g.llegada,
                  g.idMarcaVehiculo,
                  g.placa,
                  g.certificadoInscripcion,
                  g.licenciaConducir,
                  g.comprobantePago,
                  g.idMotivoTraslado,
                  et.DocId,
                  et.nombre,
                  CASE WHEN d.afectaStock = 1 THEN 'SI' ELSE 'NO' END as afectaStock
                FROM
                  Documento d
                  LEFT JOIN Relacion ro ON d.id = ro.idDocumento and ro.idTipo = 1
                  LEFT JOIN Entidad eo ON ro.idEntidad = eo.id
                  LEFT JOIN Constante e ON e.codigo = 'EstadoDocumento' AND d.idEstado = e.oid
                  LEFT JOIN GuiaRemision g ON g.idDocumento = d.id
                  LEFT JOIN Relacion rt ON d.id = rt.idDocumento and rt.idTipo = 2
                  LEFT JOIN Entidad et ON rt.idEntidad = et.id
                WHERE
                  d.id = @id");
            db.AddInParameter(command, "id", DbType.Int32, entrada[0].Value);
            DataTable dt = db.ExecuteDataSet(command).Tables[0];
            rpta.AddRange(dt.Rows.ToList());

            command = db.GetSqlStringCommand(@"
                SELECT
                  di.nroItem, di.cantidad, di.idUnidad, p.id as idProducto, p.nombre, di.precioUnitario, 0.00 as subTotal, di.vencimiento, di.nroLote, p.idMarca, di.peso, p.codigo
                FROM
                  DocumentoItem di
                  JOIN Producto p ON di.idProducto = p.id
                  LEFT JOIN Constante l ON p.idMarca = l.oid AND l.codigo = 'Marca'
                WHERE
                  di.idDocumento = @id");
            db.AddInParameter(command, "id", DbType.Int32, entrada[0].Value);
            dt = db.ExecuteDataSet(command).Tables[0];
            rpta.Add(new Element("rpta", dt));

            return rpta;
        }
        public static List<Element> Nuevo(List<Element> entrada)
        {
            List<Element> rpta = new List<Element>();

            Database db = DatabaseFactory.CreateDatabase("dbItegracion");
            DbCommand command = db.GetSqlStringCommand(@"
                SELECT
                  TOP 0 di.nroItem, di.cantidad, di.idUnidad, p.id as idProducto, p.nombre, di.precioUnitario, 0.00 as subTotal, di.vencimiento, di.nroLote, p.idMarca, 0.00 as peso, '' as codigo
                FROM
                  DocumentoItem di
                  JOIN Producto p ON di.idProducto = p.id
                WHERE
                  di.idDocumento = 0");
            DataTable dt = db.ExecuteDataSet(command).Tables[0];
            rpta.Add(new Element("rpta", dt));

            return rpta;
        }
        public static List<Element> InsertarIngreso(List<Element> entrada)
        {
            List<Element> rpta = new List<Element>();

            Database db = DatabaseFactory.CreateDatabase("dbItegracion");
            DbCommand command = db.GetSqlStringCommand(@"
                INSERT Documento(serie, numero, fecha, idTipo, idMoneda, idModalidadPago, idEstado, subTotal, igv, total, afectaStock) VALUES(@serie, @numero, @fecha, @idTipo, @idMoneda, @idModalidadPago, 1, @subTotal, @igv, @total, @afectaStock)
                SELECT @@IDENTITY
            ");
            db.AddInParameter(command, "serie", DbType.String, entrada[1].Value);
            db.AddInParameter(command, "numero", DbType.String, entrada[2].Value);
            db.AddInParameter(command, "fecha", DbType.DateTime, entrada[3].Value);
            db.AddInParameter(command, "idTipo", DbType.Int32, entrada[4].Value);
            db.AddInParameter(command, "idMoneda", DbType.Int32, entrada[5].Value);
            db.AddInParameter(command, "idModalidadPago", DbType.Int32, entrada[6].Value);
            db.AddInParameter(command, "subTotal", DbType.Decimal, entrada[11].Value);
            db.AddInParameter(command, "igv", DbType.Decimal, entrada[12].Value);
            db.AddInParameter(command, "total", DbType.Decimal, entrada[13].Value);
            db.AddInParameter(command, "afectaStock", DbType.Boolean, (entrada[26].Value + "" == "SI"));

            object id = db.ExecuteScalar(command);

            command = db.GetSqlStringCommand(@"
                UPDATE Entidad SET nombre = @nombre, direccion = @direccion WHERE docId = @docId
                INSERT Entidad(nombre, direccion, docId, idTipo) SELECT @nombre, @direccion, @docId, @idTipo WHERE @@ROWCOUNT = 0
                SELECT id FROM Entidad WHERE docId = @docId
            ");
            db.AddInParameter(command, "docId", DbType.String, entrada[7].Value);
            db.AddInParameter(command, "nombre", DbType.String, entrada[8].Value);
            db.AddInParameter(command, "direccion", DbType.String, entrada[9].Value);
            db.AddInParameter(command, "idTipo", DbType.Int32, entrada[10].Value);
            object idEntidad = db.ExecuteScalar(command);

            command = db.GetSqlStringCommand(@"
                    INSERT INTO Relacion(idEntidad, idDocumento, idTipo) VALUES(@idEntidad, @idDocumento, 1)
                ");
            db.AddInParameter(command, "idEntidad", DbType.Int32, idEntidad);
            db.AddInParameter(command, "idDocumento", DbType.Int32, id);
            db.ExecuteNonQuery(command);

            foreach (DataRow dr in (entrada[14].Value as DataTable).Rows)
            {
                command = db.GetSqlStringCommand(@"
                    INSERT INTO DocumentoItem(idDocumento, nroItem, idUnidad, cantidad, precioUnitario, vencimiento, nroLote, peso, idProducto) VALUES(@idDocumento, @nroItem, @idUnidad, @cantidad, @precioUnitario, @vencimiento, @nroLote, @peso, @idProducto)
                ");
                db.AddInParameter(command, "idDocumento", DbType.Int32, id);
                db.AddInParameter(command, "nroItem", DbType.Int32, dr["nroItem"]);
                db.AddInParameter(command, "idUnidad", DbType.Int32, dr["idUnidad"]);
                db.AddInParameter(command, "cantidad", DbType.Decimal, dr["cantidad"]);
                db.AddInParameter(command, "precioUnitario", DbType.Decimal, dr["precioUnitario"]);
                db.AddInParameter(command, "vencimiento", DbType.String, dr["vencimiento"]);
                db.AddInParameter(command, "nroLote", DbType.String, dr["nroLote"]);
                db.AddInParameter(command, "peso", DbType.Decimal, dr["peso"]);
                db.AddInParameter(command, "idProducto", DbType.Int32, dr["idProducto"]);
                db.ExecuteNonQuery(command);
            }
            if (entrada[26].Value + "" == "SI")
            {
                foreach (DataRow dr in (entrada[14].Value as DataTable).Rows)
                {
                    command = db.GetSqlStringCommand(@"
                    UPDATE Existencia SET cantidad = cantidad + @cantidad, precioUnitario = CASE WHEN precioUnitario > @precioUnitario THEN precioUnitario ELSE @precioUnitario END
                    WHERE idProducto = @idProducto AND idAlmacen = 1 AND idUnidad = @idUnidad AND vencimiento = ISNULL(@vencimiento, '') AND nroLote = @nroLote
                    INSERT Existencia SELECT @idProducto, 1, @idUnidad, @cantidad, @precioUnitario, ISNULL(@vencimiento, ''), @nroLote WHERE @@ROWCOUNT = 0
                ");
                    db.AddInParameter(command, "idProducto", DbType.Int32, dr["idProducto"]);
                    db.AddInParameter(command, "idUnidad", DbType.Int32, dr["idUnidad"]);
                    db.AddInParameter(command, "cantidad", DbType.Decimal, dr["cantidad"]);
                    db.AddInParameter(command, "precioUnitario", DbType.Decimal, dr["precioUnitario"]);
                    db.AddInParameter(command, "vencimiento", DbType.String, dr["vencimiento"]);
                    db.AddInParameter(command, "nroLote", DbType.String, dr["nroLote"]);
                    db.ExecuteNonQuery(command);
                }
            }
            //Adicionales de Guia de Remision
            if (entrada[4].Value + "" == "8")
            {
                command = db.GetSqlStringCommand(@"
                    INSERT GuiaRemision(
	                    idDocumento, fechaTraslado, partida, llegada, 
	                    idMarcaVehiculo, placa, certificadoInscripcion, 
	                    licenciaConducir, comprobantePago, idMotivoTraslado
                    )
                    VALUES(
	                    @idDocumento, @fechaTraslado, @partida, @llegada, 
	                    @idMarcaVehiculo, @placa, @certificadoInscripcion, 
	                    @licenciaConducir, @comprobantePago, @idMotivoTraslado
                    )
                ");
                db.AddInParameter(command, "idDocumento", DbType.Int32, id);
                db.AddInParameter(command, "fechaTraslado", DbType.DateTime, entrada[15].Value);
                db.AddInParameter(command, "partida", DbType.String, entrada[16].Value);
                db.AddInParameter(command, "llegada", DbType.String, entrada[17].Value);
                db.AddInParameter(command, "idMarcaVehiculo", DbType.Int32, entrada[22].Value);
                db.AddInParameter(command, "placa", DbType.String, entrada[23].Value);
                db.AddInParameter(command, "certificadoInscripcion", DbType.String, entrada[24].Value);
                db.AddInParameter(command, "licenciaConducir", DbType.String, entrada[25].Value);
                db.AddInParameter(command, "comprobantePago", DbType.String, entrada[19].Value);
                db.AddInParameter(command, "idMotivoTraslado", DbType.Int32, entrada[18].Value);
                db.ExecuteNonQuery(command);

                command = db.GetSqlStringCommand(@"
                    UPDATE Entidad SET nombre = @nombre WHERE docId = @docId
                    INSERT Entidad(nombre, docId, idTipo) SELECT @nombre, @docId, 4 WHERE @@ROWCOUNT = 0
                    SELECT id FROM Entidad WHERE docId = @docId
                ");
                db.AddInParameter(command, "docId", DbType.String, entrada[20].Value);
                db.AddInParameter(command, "nombre", DbType.String, entrada[21].Value);
                idEntidad = db.ExecuteScalar(command);

                command = db.GetSqlStringCommand(@"
                    INSERT INTO Relacion(idEntidad, idDocumento, idTipo) VALUES(@idEntidad, @idDocumento, 2)
                ");
                db.AddInParameter(command, "idEntidad", DbType.Int32, idEntidad);
                db.AddInParameter(command, "idDocumento", DbType.Int32, id);
                db.ExecuteNonQuery(command);
            }

            command = db.GetSqlStringCommand(@"
                UPDATE di
                SET di.stock = e.cantidad
                FROM
	                DocumentoItem di
	                JOIN Existencia e ON di.idProducto = e.idProducto AND di.idUnidad = e.idUnidad
                WHERE
	                di.idDocumento = @idDocumento
            ");
            db.AddInParameter(command, "idDocumento", DbType.Int32, id);
            db.ExecuteNonQuery(command);

            rpta.Add(new Element("rpta", "OK"));

            return rpta;
        }
        public static List<Element> AnularIngreso(List<Element> entrada)
        {
            List<Element> rpta = new List<Element>();

            Database db = DatabaseFactory.CreateDatabase("dbItegracion");
            DbCommand command = db.GetSqlStringCommand(@"
                UPDATE Documento SET idEstado = 9 WHERE id = @id
            ");
            db.AddInParameter(command, "id", DbType.String, entrada[0].Value);
            db.ExecuteNonQuery(command);

            if (entrada[1].Value + "" == "SI")
            {
                foreach (DataRow dr in (entrada[2].Value as DataTable).Rows)
                {
                    command = db.GetSqlStringCommand(@"
                    UPDATE Existencia SET cantidad = cantidad - @cantidad, precioUnitario = CASE WHEN precioUnitario > @precioUnitario THEN precioUnitario ELSE @precioUnitario END
                    WHERE idProducto = @idProducto AND idAlmacen = 1 AND idUnidad = @idUnidad AND vencimiento = ISNULL(@vencimiento, '') AND nroLote = @nroLote
                ");
                    db.AddInParameter(command, "idProducto", DbType.Int32, dr["idProducto"]);
                    db.AddInParameter(command, "idUnidad", DbType.Int32, dr["idUnidad"]);
                    db.AddInParameter(command, "cantidad", DbType.Decimal, dr["cantidad"]);
                    db.AddInParameter(command, "precioUnitario", DbType.Decimal, dr["precioUnitario"]);
                    db.AddInParameter(command, "vencimiento", DbType.String, dr["vencimiento"]);
                    db.AddInParameter(command, "nroLote", DbType.String, dr["nroLote"]);
                    db.ExecuteNonQuery(command);
                }
            }
            rpta.Add(new Element("rpta", "OK"));
            return rpta;
        }
        public static List<Element> InsertarSalida(List<Element> entrada)
        {
            List<Element> rpta = new List<Element>();

            Database db = DatabaseFactory.CreateDatabase("dbItegracion");
            DbCommand command = db.GetSqlStringCommand(@"
                INSERT Documento(serie, numero, fecha, idTipo, idMoneda, idModalidadPago, idEstado, subTotal, igv, total, afectaStock) VALUES(@serie, @numero, @fecha, @idTipo, @idMoneda, @idModalidadPago, 1, @subTotal, @igv, @total, @afectaStock)
                SELECT @@IDENTITY
            ");
            db.AddInParameter(command, "serie", DbType.String, entrada[1].Value);
            db.AddInParameter(command, "numero", DbType.String, entrada[2].Value);
            db.AddInParameter(command, "fecha", DbType.DateTime, entrada[3].Value);
            db.AddInParameter(command, "idTipo", DbType.Int32, entrada[4].Value);
            db.AddInParameter(command, "idMoneda", DbType.Int32, entrada[5].Value);
            db.AddInParameter(command, "idModalidadPago", DbType.Int32, entrada[6].Value);
            db.AddInParameter(command, "subTotal", DbType.Decimal, entrada[11].Value);
            db.AddInParameter(command, "igv", DbType.Decimal, entrada[12].Value);
            db.AddInParameter(command, "total", DbType.Decimal, entrada[13].Value);
            db.AddInParameter(command, "afectaStock", DbType.Boolean, (entrada[26].Value + "" == "SI"));
            object id = db.ExecuteScalar(command);

            command = db.GetSqlStringCommand(@"
                UPDATE Entidad SET nombre = @nombre, direccion = @direccion WHERE docId = @docId
                INSERT Entidad(nombre, direccion, docId, idTipo) SELECT @nombre, @direccion, @docId, @idTipo WHERE @@ROWCOUNT = 0
                SELECT id FROM Entidad WHERE docId = @docId
            ");
            db.AddInParameter(command, "docId", DbType.String, entrada[7].Value);
            db.AddInParameter(command, "nombre", DbType.String, entrada[8].Value);
            db.AddInParameter(command, "direccion", DbType.String, entrada[9].Value);
            db.AddInParameter(command, "idTipo", DbType.Int32, entrada[10].Value);
            object idEntidad = db.ExecuteScalar(command);

            command = db.GetSqlStringCommand(@"
                    INSERT INTO Relacion(idEntidad, idDocumento, idTipo) VALUES(@idEntidad, @idDocumento, 1)
                ");
            db.AddInParameter(command, "idEntidad", DbType.Int32, idEntidad);
            db.AddInParameter(command, "idDocumento", DbType.Int32, id);
            db.ExecuteNonQuery(command);

            foreach (DataRow dr in (entrada[14].Value as DataTable).Rows)
            {
                command = db.GetSqlStringCommand(@"
                    INSERT INTO DocumentoItem(idDocumento, nroItem, idUnidad, cantidad, precioUnitario, vencimiento, nroLote, peso, idProducto) VALUES(@idDocumento, @nroItem, @idUnidad, @cantidad, @precioUnitario, @vencimiento, @nroLote, @peso, @idProducto)
                ");
                db.AddInParameter(command, "idDocumento", DbType.Int32, id);
                db.AddInParameter(command, "nroItem", DbType.Int32, dr["nroItem"]);
                db.AddInParameter(command, "idUnidad", DbType.Int32, dr["idUnidad"]);
                db.AddInParameter(command, "cantidad", DbType.Decimal, dr["cantidad"]);
                db.AddInParameter(command, "precioUnitario", DbType.Decimal, dr["precioUnitario"]);
                db.AddInParameter(command, "vencimiento", DbType.String, dr["vencimiento"]);
                db.AddInParameter(command, "nroLote", DbType.String, dr["nroLote"]);
                db.AddInParameter(command, "peso", DbType.Decimal, dr["peso"]);
                db.AddInParameter(command, "idProducto", DbType.Decimal, dr["idProducto"]);
                db.ExecuteNonQuery(command);
            }
            if (entrada[26].Value + "" == "SI")
            {
                foreach (DataRow dr in (entrada[14].Value as DataTable).Rows)
                {
                    command = db.GetSqlStringCommand(@"
                    UPDATE Existencia SET cantidad = cantidad - @cantidad
                    WHERE idProducto = @idProducto AND idAlmacen = 1 AND idUnidad = @idUnidad AND vencimiento = ISNULL(@vencimiento, '') AND nroLote = @nroLote
                    INSERT Existencia SELECT @idProducto, 1, @idUnidad, -1*@cantidad, @precioUnitario, ISNULL(@vencimiento, ''), @nroLote WHERE @@ROWCOUNT = 0
                ");
                    db.AddInParameter(command, "idProducto", DbType.Int32, dr["idProducto"]);
                    db.AddInParameter(command, "idUnidad", DbType.Int32, dr["idUnidad"]);
                    db.AddInParameter(command, "cantidad", DbType.Decimal, dr["cantidad"]);
                    db.AddInParameter(command, "precioUnitario", DbType.Decimal, dr["precioUnitario"]);
                    db.AddInParameter(command, "vencimiento", DbType.String, dr["vencimiento"]);
                    db.AddInParameter(command, "nroLote", DbType.String, dr["nroLote"]);
                    db.ExecuteNonQuery(command);
                }
            }
            //Adicionales de Guia de Remision
            if (entrada[4].Value + "" == "5") {
                command = db.GetSqlStringCommand(@"
                    INSERT GuiaRemision(
	                    idDocumento, fechaTraslado, partida, llegada, 
	                    idMarcaVehiculo, placa, certificadoInscripcion, 
	                    licenciaConducir, comprobantePago, idMotivoTraslado
                    )
                    VALUES(
	                    @idDocumento, @fechaTraslado, @partida, @llegada, 
	                    @idMarcaVehiculo, @placa, @certificadoInscripcion, 
	                    @licenciaConducir, @comprobantePago, @idMotivoTraslado
                    )
                ");
                db.AddInParameter(command, "idDocumento", DbType.Int32, id);
                db.AddInParameter(command, "fechaTraslado", DbType.DateTime, entrada[15].Value);
                db.AddInParameter(command, "partida", DbType.String, entrada[16].Value);
                db.AddInParameter(command, "llegada", DbType.String, entrada[17].Value);
                db.AddInParameter(command, "idMarcaVehiculo", DbType.Int32, entrada[22].Value);
                db.AddInParameter(command, "placa", DbType.String, entrada[23].Value);
                db.AddInParameter(command, "certificadoInscripcion", DbType.String, entrada[24].Value);
                db.AddInParameter(command, "licenciaConducir", DbType.String, entrada[25].Value);
                db.AddInParameter(command, "comprobantePago", DbType.String, entrada[19].Value);
                db.AddInParameter(command, "idMotivoTraslado", DbType.Int32, entrada[18].Value);
                db.ExecuteNonQuery(command);

                command = db.GetSqlStringCommand(@"
                    UPDATE Entidad SET nombre = @nombre WHERE docId = @docId
                    INSERT Entidad(nombre, docId, idTipo) SELECT @nombre, @docId, 4 WHERE @@ROWCOUNT = 0
                    SELECT id FROM Entidad WHERE docId = @docId
                ");
                db.AddInParameter(command, "docId", DbType.String, entrada[20].Value);
                db.AddInParameter(command, "nombre", DbType.String, entrada[21].Value);
                idEntidad = db.ExecuteScalar(command);

                command = db.GetSqlStringCommand(@"
                    INSERT INTO Relacion(idEntidad, idDocumento, idTipo) VALUES(@idEntidad, @idDocumento, 2)
                ");
                db.AddInParameter(command, "idEntidad", DbType.Int32, idEntidad);
                db.AddInParameter(command, "idDocumento", DbType.Int32, id);
                db.ExecuteNonQuery(command);
            }

            command = db.GetSqlStringCommand(@"
                UPDATE di
                SET di.stock = e.cantidad
                FROM
	                DocumentoItem di
	                JOIN Existencia e ON di.idProducto = e.idProducto AND di.idUnidad = e.idUnidad
                WHERE
	                di.idDocumento = @idDocumento
            ");
            db.AddInParameter(command, "idDocumento", DbType.Int32, id);
            db.ExecuteNonQuery(command);

            rpta.Add(new Element("rpta", "OK"));

            return rpta;
        }
        
        public static List<Element> AnularSalida(List<Element> entrada)
        {
            List<Element> rpta = new List<Element>();

            Database db = DatabaseFactory.CreateDatabase("dbItegracion");
            DbCommand command = db.GetSqlStringCommand(@"
                UPDATE Documento SET idEstado = 9 WHERE id = @id
            ");
            db.AddInParameter(command, "id", DbType.String, entrada[0].Value);
            db.ExecuteNonQuery(command);

            if (entrada[1].Value + "" == "SI")
            {
                foreach (DataRow dr in (entrada[2].Value as DataTable).Rows)
                {
                    command = db.GetSqlStringCommand(@"
                    UPDATE Existencia SET cantidad = cantidad + @cantidad, precioUnitario = CASE WHEN precioUnitario > @precioUnitario THEN precioUnitario ELSE @precioUnitario END
                    WHERE idProducto = @idProducto AND idAlmacen = 1 AND idUnidad = @idUnidad AND vencimiento = ISNULL(@vencimiento, '') AND nroLote = @nroLote
                ");
                    db.AddInParameter(command, "idProducto", DbType.Int32, dr["idProducto"]);
                    db.AddInParameter(command, "idUnidad", DbType.Int32, dr["idUnidad"]);
                    db.AddInParameter(command, "cantidad", DbType.Decimal, dr["cantidad"]);
                    db.AddInParameter(command, "precioUnitario", DbType.Decimal, dr["precioUnitario"]);
                    db.AddInParameter(command, "vencimiento", DbType.String, dr["vencimiento"]);
                    db.AddInParameter(command, "nroLote", DbType.String, dr["nroLote"]);
                    db.ExecuteNonQuery(command);
                }
            }
            rpta.Add(new Element("rpta", "OK"));
            return rpta;
        }
    }
}
